package com.qf;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;

/**
 * @author YDW
 * projectName:project2202_3
 * time:2022/5/15 15:47
 * description:
 */
public class ShiroDemo {
    public static void main(String[] args) {
        //安全管理器(shiro的核心控制器（大脑))
        DefaultSecurityManager securityManager=new DefaultSecurityManager();

        IniRealm realm =new IniRealm("classpath:shiro.ini");

        //realm:提供用户和账号信息（存储在服务器）
        securityManager.setRealm(realm);

        //设置安全管理器对象
        SecurityUtils.setSecurityManager(securityManager);

        //一切对外的接口
        Subject subject = SecurityUtils.getSubject();

        //登陆操作
        //账号密码：由用户输入的账号和密码，与存储在服务器的账号和密码对比
        //假设用户输入的账号密码为： zhangsan 123456
        UsernamePasswordToken token=new UsernamePasswordToken("lisi","123456");

        subject.login(token);

        //判断是否登陆成功
        System.out.println("是否认证："+subject.isAuthenticated());
        System.out.println("是否拥有dev角色："+subject.hasRole("developer"));
        System.out.println("是否拥有admin角色："+subject.hasRole("admin"));
        System.out.println("是否拥有sys:user:add权限："+subject.isPermitted("sys:user:add"));
        System.out.println("是否拥有sys:menu:del："+subject.isPermitted("sys:menu:del"));

    }
}
